﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace DADOS.usuario
{
    public class metCalculo
    {
        private SqlConnection _conexao = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_PROAD_SQL"].ConnectionString);

        DB_PROAD banco = new DB_PROAD();

        private void FecharConexao(object banco)
        {
            ((DB_PROAD)banco).Connection.Close();
        }

        private void InicializarConexao(object banco)
        {
            ((DB_PROAD)banco).Connection.Open();
        }
        
        public string CalcularAD(int intCodUsuario)
        {
            var strRetorno = "";

            try
            {
                InicializarConexao(banco);
                var objUsuarioAd = banco.TB_CLASSIFICACAO_FINAL.Where(q => q.CO_USUARIO == intCodUsuario).FirstOrDefault();

                if (objUsuarioAd != null)
                {
                    if (objUsuarioAd.NR_AD3_1 != 0 || objUsuarioAd.NR_AD3_2 != 0 || objUsuarioAd.NR_AD3_3 != 0)
                    {
                        strRetorno = "AD3";
                    }
                    else if(objUsuarioAd.NR_AD2_1 != 0 || objUsuarioAd.NR_AD2_2 != 0 || objUsuarioAd.NR_AD2_3 != 0 || objUsuarioAd.NR_AD2_4 != 0 || objUsuarioAd.NR_AD2_5 != 0 || objUsuarioAd.NR_AD2_6 != 0 || objUsuarioAd.NR_AD2_7 != 0 || objUsuarioAd.NR_AD2_8 != 0 || objUsuarioAd.NR_AD2_9 != 0 || objUsuarioAd.NR_AD2_10 != 0 || objUsuarioAd.NR_AD2_11 != 0 || objUsuarioAd.NR_AD2_12 != 0 || objUsuarioAd.NR_AD2_13 != 0 || objUsuarioAd.NR_AD2_14 != 0)
                    {
                        strRetorno = "AD2";
                    }else
                    {
                        strRetorno = "AD1";
                    }

                }else
                {
                    strRetorno = "AD não identificado!";
                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }

            return strRetorno;
        }

        public string CalcularKatz(int intCodUsuario)
        {
            var strCalculo = "Não Avaliado!";

            try
            {
                InicializarConexao(banco);
                var objUsuarioAvd = banco.TB_AVD.Where(q => q.CO_USUARIO == intCodUsuario).FirstOrDefault();

                if (objUsuarioAvd != null)
                {

                    int intDep = 0;
                    int intImDep = 0;

                    if (objUsuarioAvd.NR_Q_1_ALIMENTACAO == 1)
                    {
                        intImDep++;
                    }else
                    {
                        intDep++;
                    }
                    if (objUsuarioAvd.NR_Q_1_BANHEIRO == 1)
                    {
                        intImDep++;
                    }
                    else
                    {
                        intDep++;
                    }
                    if (objUsuarioAvd.NR_Q_1_BANHO == 1)
                    {
                        intImDep++;
                    }
                    else
                    {
                        intDep++;
                    }
                    if (objUsuarioAvd.NR_Q_1_CONT == 1)
                    {
                        intImDep++;
                    }
                    else
                    {
                        intDep++;
                    }
                    if (objUsuarioAvd.NR_Q_1_TRANS == 1)
                    {
                        intImDep++;
                    }
                    else
                    {
                        intDep++;
                    }
                    if (objUsuarioAvd.NR_Q_1_VESTIR == 1)
                    {
                        intImDep++;
                    }
                    else
                    {
                        intDep++;
                    }

                    if (intImDep == 6 && intDep == 0)
                    {
                        strCalculo = "0";
                    }
                    else if (intImDep == 5 && intDep == 1)
                    {
                        strCalculo = "1";
                    }
                    else if (intImDep == 4 && intDep == 2)
                    {
                        strCalculo = "2";
                    }
                    else if (intImDep == 3 && intDep == 3)
                    {
                        strCalculo = "3";
                    }
                    else if (intImDep == 2 && intDep == 4)
                    {
                        strCalculo = "4";
                    }
                    else if (intImDep == 1 && intDep == 5)
                    {
                        strCalculo = "5";
                    }
                    else if (intImDep == 0 && intDep == 6)
                    {
                        strCalculo = "6";
                    }else
                    {
                        strCalculo = "Não Avaliado!";
                    }

                }
                else
                {
                    strCalculo = "Não Avaliado!";
                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }

            return strCalculo;
        }

        public string CalculaBraden(int intCodUsuario)
        {
            var strCalculo = "Não Avaliado!";

            try
            {
                InicializarConexao(banco);
                
                var objUsuarioAvd = banco.TB_AVD.Where(q => q.CO_USUARIO == intCodUsuario).FirstOrDefault();

                if (objUsuarioAvd != null)
                {
                    int intSoma = objUsuarioAvd.NR_Q_3_ATIVIDADE + objUsuarioAvd.NR_Q_3_CISALHAMENTO +
                                  objUsuarioAvd.NR_Q_3_MOBILIDADE + objUsuarioAvd.NR_Q_3_NUTRICAO +
                                  objUsuarioAvd.NR_Q_3_PERC + objUsuarioAvd.NR_Q_3_UMIDADE;

                    var objContexto = banco.TB_CONTEXTO.Where(q => q.CO_USUARIO == intCodUsuario).FirstOrDefault();

                    if (objContexto != null)
                    {
                        if(objContexto.NR_Q_3 >= 65)
                        {
                            if (intSoma >= 17)
                            {
                                strCalculo = intSoma + " - Há risco para ulcera por pressão";
                            }else
                            {
                                strCalculo = intSoma + " - Não há risco";
                            }
                        }else
                        {
                            if (intSoma >= 16)
                            {
                                strCalculo = intSoma + " - Há risco para ulcera por pressão";
                            }
                            else
                            {
                                strCalculo = intSoma + " - Não há risco";
                            }
                        }
                    }
                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }

            return strCalculo;
        }
    }
}
